/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package responsabile;

import ejb.GestoreAmministratoreLocal;
import it.uninsieme.common.Utility;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;
import jpa.CredenzialiResponsabile;
import jpa.Responsabile;

/**
 *
 * @author Administrator
 */
@ManagedBean(name = "AdminBean")
@RequestScoped
public class AdminBean {

    @EJB
    GestoreAmministratoreLocal gadmin;

    private String citta;
    private String via;
    private String cap;
    private String telefono;
    private String provincia;
    private String cognome;
    private String codiceFiscale;
    private String email;
    private String cel;
    private String nome;
    private String username;
    private String password;
    private String confermaPassword;
    private String message;
    private String message2;
    private String idResponsabile;
    private List<SelectItem> listaResponsabili;
    private List<Responsabile> responsabili;

    /**
     * Creates a new instance of AdminBean
     */
    public AdminBean() {
    }

    public String getMessage2() {
        return message2;
    }

    public void setMessage2(String message2) {
        this.message2 = message2;
    }

    public Collection<SelectItem> getlistaResponsabili() {
        listaResponsabili = new ArrayList<>();
        responsabili = gadmin.listaResponsabile();
        for (Responsabile p : responsabili) {
            String text = "ID:" + p.getId() + " - " + p.getCognome() + " " + p.getNome();
            listaResponsabili.add(new SelectItem(p.getId(), text));
        }
        Utility.ordinaListaLabel(listaResponsabili);
        return Collections.unmodifiableCollection(listaResponsabili);
    }

    public void setlistaResponsabili(List<SelectItem> listaResponsabili) {
        this.listaResponsabili = listaResponsabili;
    }

    public String getIdResponsabile() {
        return idResponsabile;
    }

    public void setIdResponsabile(String idResponsabile) {
        this.idResponsabile = idResponsabile;
    }

    public String getCap() {
        return cap;
    }

    public void setCap(String cap) {
        this.cap = cap;
    }

    public String getCel() {
        return cel;
    }

    public void setCel(String cel) {
        this.cel = cel;
    }

    public String getCitta() {
        return citta;
    }

    public void setCitta(String citta) {
        this.citta = citta;
    }

    public String getCodiceFiscale() {
        return codiceFiscale;
    }

    public void setCodiceFiscale(String codiceFiscale) {
        this.codiceFiscale = codiceFiscale;
    }

    public String getCognome() {
        return cognome;
    }

    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    public String getConfermaPassword() {
        return confermaPassword;
    }

    public void setConfermaPassword(String confermaPassword) {
        this.confermaPassword = confermaPassword;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getProvincia() {
        return provincia;
    }

    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getVia() {
        return via;
    }

    public void setVia(String via) {
        this.via = via;
    }

    public String registra() {
        CredenzialiResponsabile cu = new CredenzialiResponsabile();
        cu.setPassword(password);
        cu.setUsername(username);
        if (gadmin.controllaUsername(cu) != null) {
            message = "Username già utilizzata da un altro Responsabile";
            return "errore";
        }
        if (!password.equals(confermaPassword)) {
            message = "Errore le password non coincidono";
            return "errore";
        } else {
            message = "";
        }
        Responsabile t = new Responsabile();
        t.setCap(cap);
        t.setCell(cel);
        t.setCitta(citta);
        t.setCodiceFiscale(codiceFiscale);
        t.setCognome(cognome);
        t.setEmail(email);
        t.setNome(nome);
        t.setProvincia(provincia);
        t.setTelefono(telefono);
        t.setVia(via);
        boolean reg = gadmin.registra(cu, t);
        if (reg == false) {
            message = "Errore nella registrazione del responsabile nel database";
            return "errore";
        }
        message2 = "Registrazione effettuata correttemente";
        return "RegistrazioneOK";
    }

    public String modifica() {
        Responsabile t = new Responsabile();
        t.setId(new Integer(idResponsabile));
        t.setCap(cap);
        t.setCell(cel);
        t.setCitta(citta);
        t.setCodiceFiscale(codiceFiscale);
        t.setCognome(cognome);
        t.setEmail(email);
        t.setNome(nome);
        t.setProvincia(provincia);
        t.setTelefono(telefono);
        t.setVia(via);
        boolean reg = gadmin.modifica(t);
        if (reg == false) {
            message = "Errore nella modifica del responsabile nel database";
            return "errore";
        }
        message2 = "Modifica effettuata correttamente";
        return "RegistrazioneOK";
    }

    public String elimina() {
        boolean reg = gadmin.elimina(new Integer(idResponsabile));
        if (reg == false) {
            message = "Errore nell'eliminazione del responsabile dal database";
            return "errore";
        }
        message2 = "Eliminazione effettuata correttamente";
        return "RegistrazioneOK";
    }

}
